package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.entity.MemberDO;
import com.ssy.lingxi.member.merchant.entity.RoleDO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.NamePageVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.request.*;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.response.*;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 会员考评服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/5/17
 */
public interface IMemberAppraisalService {

    /**
     * 状态下拉查询
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<List<StatusVO>> listMemberAppraisalStatus(HttpHeaders headers);

    /**
     * 会员考评查询 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberAppraisalSubmitPageQueryVO>> pageSummaryMemberAppraisal(HttpHeaders headers, MemberAppraisalSummaryPageVO pageVO);

    /**
     * 会员信息 - 会员档案 - 分页查询考评列表
     * @param member 上级会员
     * @param role 上级会员角色
     * @param subMember 下级会员
     * @param subRole 下级会员角色
     * @param current 当前页
     * @param pageSize 每页行数
     * @return 查询结果
     */
    Wrapper<PageData<MemberAppraisalPageQueryVO>> pageMemberAppraisal(MemberDO member, RoleDO role, MemberDO subMember, RoleDO subRole, int current, int pageSize);

    /**
     * 待新增考评单 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberAppraisalAddPageQueryVO>> pageWaitAddMemberAppraisal(HttpHeaders headers, MemberAppraisalPageVO pageVO);

    /**
     * 待考评打分 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberAppraisalGradePageQueryVO>> pageWaitGradeMemberAppraisal(HttpHeaders headers, MemberAppraisalPageVO pageVO);

    /**
     * 待提交汇总考评结果 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberAppraisalSubmitPageQueryVO>> pageWaitSubmitMemberAppraisal(HttpHeaders headers, MemberAppraisalPageVO pageVO);

    /**
     * 待审核考评结果一级 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberAppraisalAuditPageQueryVO>> pageWaitAuditOneMemberAppraisal(HttpHeaders headers, MemberAppraisalPageVO pageVO);

    /**
     * 待审核考评结果二级 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberAppraisalAuditPageQueryVO>> pageWaitAuditTwoMemberAppraisal(HttpHeaders headers, MemberAppraisalPageVO pageVO);

    /**
     * 待通报考评结果 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberAppraisalNotificationPageQueryVO>> pageWaitNotificationMemberAppraisal(HttpHeaders headers, MemberAppraisalPageVO pageVO);

    /**
     * 考评结果查询 - 会员考评分页列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberAppraisalSubResultPageQueryVO>> pageSubResultMemberAppraisal(HttpHeaders headers, MemberAppraisalSubResultPageVO pageVO);

    /**
     * 考评结果查询 - 会员考评查询
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberAppraisalSubResultVO> getSubMemberAppraisalResult(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 会员考评 - 会员考评结果查询
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberAppraisalResultVO> getMemberAppraisalResult(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 会员考评 - 会员考评查询
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberAppraisalVO> getMemberAppraisal(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 待考评打分 - 会员考评查询
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 操作结果
     */
    Wrapper<MemberAppraisalVO> getWaitGradeMemberAppraisal(HttpHeaders headers, CommonIdVO idVO);

    /**
     * 待新增考评单 - 会员考评项目配置分页列表(选择项目)
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<MemberConfigAppraisalItemQueryPageVO>> pageMemberConfigAppraisalItem(HttpHeaders headers, NamePageVO pageVO);

    /**
     * 待新增考评单 - 会员考评新增
     * @param headers Http头部信息
     * @param addVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> addMemberAppraisal(HttpHeaders headers, MemberAppraisalAddVO addVO);

    /**
     * 待新增考评单 - 会员考评修改
     * @param headers Http头部信息
     * @param addVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateMemberAppraisal(HttpHeaders headers, MemberAppraisalUpdateVO addVO);

    /**
     * 待新增考评单 - 会员考评删除
     * @param headers Http头部信息
     * @param idsVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> deleteMemberAppraisal(HttpHeaders headers, CommonIdsVO idsVO);

    /**
     * 待新增考评单 - 发布
     * @param headers Http头部信息
     * @param idsVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> publishMemberAppraisal(HttpHeaders headers, CommonIdsVO idsVO);

    /**
     * 待考评打分 - 打分
     * @param headers Http头部信息
     * @param gradeVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> gradeMemberAppraisal(HttpHeaders headers, MemberAppraisalGradeVO gradeVO);

    /**
     * 待提交汇总考评结果 - 提交
     * @param headers Http头部信息
     * @param submitVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> submitMemberAppraisal(HttpHeaders headers, MemberAppraisalSubmitVO submitVO);

    /**
     * 待审核考评结果一级 - 审核
     * @param headers Http头部信息
     * @param agreeVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> auditOneMemberAppraisal(HttpHeaders headers, CommonAgreeVO agreeVO);

    /**
     * 待审核考评结果一级 - 批量审核
     * @param headers Http头部信息
     * @param idsVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> auditOneBatchMemberAppraisal(HttpHeaders headers, CommonIdsVO idsVO);

    /**
     * 待审核考评结果二级 - 审核
     * @param headers Http头部信息
     * @param agreeVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> auditTwoMemberAppraisal(HttpHeaders headers, CommonAgreeVO agreeVO);

    /**
     * 待审核考评结果二级 - 批量审核
     * @param headers Http头部信息
     * @param idsVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> auditTwoBatchMemberAppraisal(HttpHeaders headers, CommonIdsVO idsVO);

    /**
     * 通报考评结果 - 通报
     * @param headers Http头部信息
     * @param idsVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> notificationMemberAppraisal(HttpHeaders headers, CommonIdsVO idsVO);
}
